const minimist = require('minimist');
const path = require('path');
const { build } = require('esbuild');

const args = minimist(process.argv.slice(2));

const target = args._[0] || "reactivity"; // 可以手动指定打包哪个模块
const format = args.f || "global"; // 可以手动指定打包的格式

const pkg = require(path.resolve(__dirname, `../packages/${target}/package.json`));

// 打包成三种格式： iife（立即执行函数）、cjs（node中commonjs）、esm（浏览器中的esModule模块）
const outputFormt = format.startsWith('global') ? 'iife' : format == "cjs" ? "cjs" : "esm";

const outfile = path.resolve(__dirname, `../packages/${target}/dist/${target}.${format}.js`);

build({
  entryPoints: [path.resolve(__dirname, `../packages/${target}/src/index.ts`)],
  outfile,
  bundle: true, // 把所有的包打包在一块
  sourcemap: true,
  format: outputFormt,
  globalName: pkg.buidOptions?.name,
  platform: format === 'cjs' ? 'node' : 'browser',
  watch: { // 监控文件变化
    onRebuild(error) {
      if (!error) console.log('rebuild...');
    }
  }
}).then(() => {
  console.log('watching...')
})


// 开发 esbuild ， 生产 rollup